MaDi's Blog

一個紀錄自己在轉職軟體工程師路上的學習小空間

0%

[Python] Lambda函式語法

什麼是Lambda語法?

Lambda函式,是一種匿名函式,不需要定義函式名稱,只有一行運算式,語法非常簡潔,功能強大,程式語言如Java、C#及Python等都支援Lambda函式,適用於小型運算


Lambda語法架構

1
lambda parameter_list: expression

1. lambda: 宣告關鍵字

告訴程式我要用lambda語法

2. parameter_list: 傳參數進來的串列

告訴lambda函式要傳哪些參數進來

3. expression: 運算式

告訴lambda函式要執行什麼功能

Python Lambda語法

1. filter()

filter(lambda parameter: expression, iterable)

從某個迭代物件中篩選符合條件的元素

1
2
3
4
5
demo = [1,2,3,4,5]
result = filter(lambda x: x<3, demo)
print(list(result))

[1, 2]

2. map()

map(lambda parameter: expression, iterable)

在可迭代的物件中,套用特定運算式於每一個元素

1
2
3
4
5
demo = [1,2,3,4,5]
result = map(lambda x: x**2, demo)
print(list(result))

[1, 4, 9, 16, 25]

3. sorted()

sorted(iterable, key=lambda parameter: expression)

用來排序可迭代物件中的元素

1
2
3
4
5
demo = [('Kobe',24),('Curry',30),('Lebron',23)]
result = sorted(demo, key=lambda x: x[1])
print(list(result))

[('Lebron', 23), ('Kobe', 24), ('Curry', 30)]

4. reduced()

reduce(lambda parameter1, parameter2: expression, iterable)

  1. 前兩個元素先做Lambda運算
  2. 下一個(第三個)元素傳入lambda函式運算
  3. 依此類推,直到可迭代物件的元素都運算完成
    1
    2
    3
    4
    5
    6
    7
    from functools import reduce

    demo = [1,2,3,4,5]
    result = reduce(lambda x,y: x+y, demo)
    print(result)

    15
    <p.s.> 使用reduce函式前需要先載入functools模組

總結

  1. Lambda語法簡潔好用,功能強大,但只限一行的程式碼
  2. 不需要像一般函式要return,Lambda函式會自動回傳,但是運算結果要自己轉成list
  3. Lambda雖然好用,但遇到複雜運算就不可用
  4. 複雜邏輯運算時,Lambda函式可讀性較差,導致程式較不易維護

參考:

[Python教學]Python Lambda Function應用技巧分享